package com.wei.czz.framework.game.dao;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wei.czz.common.vo.game.GameUserFormVo;
import com.wei.czz.framework.game.entity.GameUserEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.Set;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wei
 * date: 2023-03-16 11:36:47
 * className: GameUserDao 游戏用户数据库交互接口
 * version: 1.0
 * description:
 */
public interface GameUserDao extends BaseMapper<GameUserEntity> {

    /**
     * 分页查询游戏用户数据
     * @param page           mp分页对象
     * @param gameUserFormVo 参数对象
     * @param deleteFlag     删除状态
     * @return 游戏用户分页数据
     */
    Page<GameUserEntity> pageGameUserList(Page<GameUserEntity> page, @Param("gameUserFormVo") GameUserFormVo gameUserFormVo,
                                           @Param("deleteFlag") Integer deleteFlag);

    /**
     * 查询游戏用户关联的用户主键列表
     * @param gameId     游戏主键
     * @param deleteFlag 删除状态
     * @return 用户主键列表
     */
    Set<Long> getUserIdList(@Param("gameId") Long gameId, @Param("deleteFlag") Integer deleteFlag);

    /**
     * 更新游戏用户的游戏总次数字段
     * @param gameUser 游戏用户对象
     * @return 更新结果[1-成功 0-失败]
     */
    int incrementGameNum(@Param("gameUser") GameUserEntity gameUser);

    /**
     * 增加用户游戏使用次数
     * @param userId     用户主键
     * @param gameId     游戏主键
     * @param updateTime 更新时间
     */
    int addUseNum(@Param("userId") Long userId, @Param("gameId") Long gameId, @Param("updateTime") Date updateTime);

}
